﻿using System.Collections.Generic;
using System.Linq;
namespace PronosGestor
{
    public class Participant
    {
        public string nom;
        public string equipePreferee;

        public List<JourneePronostiquee> JourneesPronostiquees;

        public Participant()
        {
            JourneesPronostiquees = new List<JourneePronostiquee>();
        }

        public int TotalPoints(int unIDJournee = 0)
        {
            if (unIDJournee > 0)
                return this.JourneesPronostiquees.Where(x => x.IDJournee == unIDJournee).Sum(x => x.Points);
            else
                return this.JourneesPronostiquees.Sum(x => x.Points);
        }

        public double TotalGainsVirtuels(int unIDJournee = 0)
        {
            if (unIDJournee > 0)
                return this.JourneesPronostiquees.Where(x => x.IDJournee == unIDJournee).Sum(x => x.GainsVirtuels);
            else
                return this.JourneesPronostiquees.Sum(x => x.GainsVirtuels);
        }

        public int TotalResultatsBons(int unIDJournee = 0)
        {
            if (unIDJournee > 0)
                return this.JourneesPronostiquees.Where(x => x.IDJournee == unIDJournee).Sum(x => x.NombreResultatsBons);
            else
                return this.JourneesPronostiquees.Sum(x => x.NombreResultatsBons);
        }

        public int TotalScoresExacts(int unIDJournee = 0)
        {
            if (unIDJournee > 0)
                return this.JourneesPronostiquees.Where(x => x.IDJournee == unIDJournee).Sum(x => x.NombreScoresExacts);
            else
                return this.JourneesPronostiquees.Sum(x => x.NombreScoresExacts);
        }

        public int TotalPronostics(int unIDJournee = 0)
        {
            if (unIDJournee > 0)
                return this.JourneesPronostiquees.Where(x => x.IDJournee == unIDJournee).Sum(x => x.NombreMatchPronostiques);
            else
                return this.JourneesPronostiquees.Sum(x => x.NombreMatchPronostiques);
        }

        public int TotalJourneesCompletes(int unIDJournee = 0)
        {
            if (unIDJournee > 0)
                return this.JourneesPronostiquees.Where(x => x.IDJournee == unIDJournee).Where(x => x.EstJourneeComplete()).Count();
            else
                return this.JourneesPronostiquees.Where(x => x.EstJourneeComplete()).Count();
        }

        public override string ToString()
        {
            return this.nom + " [ " + this.equipePreferee + " ] : " + this.TotalPoints();
        }
    }
}
